# todo添加元素：列表可使用append()、extend()或insert()方法来添加元素
"""
（1）append()方法：在列表末尾添加新的元素，其语法格式如下
语法：list.append(obj)
    list：表示列表，
    obj：表示添加到列表末尾的对象
"""
# number = [0, 1, 2, 3]	#创建列表number并赋值
# number.append(4)	#使用append()方法给number末尾添加元素4
# print(number)		#输出number，结果为[0, 1, 2, 3, 4]
"""
（2）extend()方法：在列表末尾一次性添加另一个序列中的多个值（用新列表扩展原来的列表），其语法格式如下。
语法：list.extend(seq)
    list：表示列表，
    obj：表示添加到列表末尾得序列
示例:
【例 4-10】  在书包中再放入练习册和笔盒。
【问题分析】创建书包列表schoolbag、练习册列表workbook和笔盒列表penbox，其中，workbook包含语文练习册和数学练习册，penbox包含铅笔、油笔和橡皮。使用extend()方法将workbook列表添加到schoolbag中，使用append()方法将penbox添加到schoolbag中。
参考代码：
【程序说明】 使用extend()方法时，是将workbook看作一个序列，将这个序列和schoolbag序列合并，因此，添加元素后，schoolbag中包含了6个元素。使用append()方法时，是将penbox看作一个对象，整体打包添加到schoolbag列表中，因此，添加元素后schoolbag中包含了7个元素，其中第7个元素是一个列表。
"""
# ##创建书包列表schoolbag并赋值
# schoolbag = ['语文书', '数学书', '英语书', '漫画书']
# print(schoolbag)						#输出schoolbag
# #创建练习册列表workbook并赋值
# workbook = ['语文练习册', '数学练习册']
# penbox = ['铅笔', '油笔', '橡皮']	#创建笔盒列表penbox并赋值
"""
（3）insert()方法：将指定对象插入到列表的指定位置，其语法格式如下
语法:ist.insert(index,obj)
    list表示列表，
    index表示插入的索引位置，
    obj表示插入列表中的对象
"""
# number = [1, 2, 4, 5]		#创建列表number并赋值
# number.insert(2,3)#使用insert()方法将元素3添加到列表索引为2的位置
# print(number)			#输出number，结果为[1, 2, 3, 4, 5]


# todo删除元素：在列表中，删除元素的常用方法有3种，分别是del命令、pop()方法和remove()方法。
"""
（1）del命令：根据索引删除列表中的元素
"""
# number = [1, 2, 3, 4, 5]	                            #创建列表number并赋值
# del number[2]				#使用del命令删除number中索引为2的元素
# print(number)				#输出number，结果为[1, 2, 4, 5]
# # del命令还可以使用分片的方式删除列表中的元素
# number = [1, 2, 3, 4, 5]                      #创建列表number并赋值
# del number[1:3]			 #使用del命令删除索引从1到3（不含）的元素
# print(number)			 #输出number，结果为[1, 4, 5]
"""
（2）pop()方法：根据索引删除列表中的元素，并返回该元素的值，其语法格式如下。
语法：list.pop([index])
    list表示列表，
    index表示删除列表元素的索引值，为可选参数，缺省时为−1，删除列表中的最后一个元素
"""
# number = [1, 2, 3, 4, 5]		#创建列表number并赋值
# number.pop()		#使用pop()方法删除number中的元素，返回值为5
# print(number)		#输出number，结果为[1, 2, 3, 4]
# number.pop(0)#使用pop()方法删除number中索引为0的元素，返回值为1
# print(number)		#输出number，结果为[2, 3, 4]
"""
（3）remove()方法：删除列表中某个值的第一个匹配项，其语法格式如下。
注意：remove()方法只能删除列表中第一个匹配的元素，如果要删除所有匹配的元素，就需要搭配循环语句实现。
语法:list.remove(obj)
    list表示列表，
    obj表示列表中要删除的对象
示例：
【例 4-11】   从书包中拿走英语书和漫画书。
【问题分析】使用pop()方法删除“英语书”，使用remove()方法删除“漫画书”。
【参考代码】
"""
# 创建书包列表schoolbag并赋值
# schoolbag = ['语文书', '数学书', '英语书', '漫画书']
# print(schoolbag)				#输出schoolbag
# schoolbag.pop(2)				#使用pop()方法删除索引为2的元素“英语书”
# print(schoolbag)				#输出schoolbag
# schoolbag.remove('漫画书')	#使用remove()方法删除元素“漫画书”
# print(schoolbag)				#输出schoolbag


# todo分片赋值：分片赋值就是以分片的形式给列表赋值，可以一次为多个元素赋值
# number = [1, 2, 3, 4]			#创建列表number并赋值
# print(number)				#输出number，结果为[1, 2, 3, 4]
# number[2:] = [5, 6, 7]			#替换索引从2开始到最后的元素
# print(number)				#输出number，结果为[1, 2, 5, 6, 7]
# # 分片赋值还可以在不替换任何原有元素的情况下插入新的元素
# number = [1,7]				#创建列表number并赋值
# #在number中索引为1的位置插入列表[2,3,4,5,6]中的元素
# number[1:1] = [2,3,4,5,6]
# print(number)	#输出number，结果为[1, 2, 3, 4, 5, 6, 7]


# todo列表排序：将列表中的元素排序的方法有3种，分别是reverse()方法、sort()方法和sorted()函数
"""
（1）reverse()方法：将列表中的元素反向存放，其语法格式如下
语法：list.reverse()
    list表示列表，该方法没有参数，没有返回值。
"""
# number = [1,2,3,4]	#创建列表number并赋值
# number.reverse()	#使用reverse()方法将number中的元素反向存放
# print(number)		#输出number，结果为[4, 3, 2, 1]
"""
（2）sort()方法：将列表中的元素进行排序（默认为升序排序），其语法格式如下。
语法：list.sort([key=None][,reverse=False])
    list表示列表；
    key:为可选参数，如果指定了该参数，会使用该参数的方法进行排序；
        len - 按元素长度排序
        str.lower - 忽略大小写排序
        int / float - 将字符串转换为数字排序

    reverse:为可选参数，表示是否降序排序，缺省时为False
示例：
【例 4-12】   将数字从大到小排序，将英文单词从短到长排序。
【问题分析】降序排序须指定参数reverse为True，要以序列内元素的长度来排序，须使用参数key指定排序依据为len()函数。
"""
# 创建数字列表number并赋值
# number = [5, 6, 9, 3, 12, 15, 18, 20, 35, 62]
# number.sort(reverse=True)	#使用sort()方法对number降序排序
# print(number)				#输出number
# #创建英文单词列表words并赋值
# words = ['chicken', 'fox', 'duck', 'dog', 'rabbit', 'sheep']
# words.sort(key=len)			#使用sort()方法对words按长度升序排序
# print(words)					#输出words
"""
（3）sorted()函数：与sort()方法不同，内置函数sorted()返回新列表，并不对原列表进行任何修改，其语法格式如下
语法：sorted(iterable[,key=None][,reverse=False])
    iterable表示可迭代对象，如列表；参数key和reverse的用法与sort()方法中的相同
"""
number = [1, 5, 2, 3, 4]  # 创建列表number并赋值
# 将number中的元素升序排序后赋给变量number_new
number_new = sorted(number, key=int, reverse=False)
print(number_new)
print(number)  # 输出number，结果为[1, 5, 2, 3, 4]
print(number_new)  # 输出number_new，结果为[1, 2, 3, 4, 5]